Skill

বাস্তব উদাহরণ সহ Java 8 এর সাথে Guava এর Integration

Java Technologies - গুয়াভা (Guava) - Guava এবং Java 8 Streams
236

গুয়াভা (Guava) একটি জনপ্রিয় Java লাইব্রেরি যা অনেক utility এবং API সরবরাহ করে, যেমন collections, caching, string manipulation, concurrency utilities ইত্যাদি। Guava-কে Java 8 এর সাথে integrate করে আরো আধুনিক এবং কার্যকর কোড লেখা যায়। এখানে Guava এবং Java 8-এর একসাথে ব্যবহারের কিছু গুরুত্বপূর্ণ উদাহরণ দেওয়া হলো:


১. Optional এর ব্যবহার

Java 8-এর java.util.Optional এবং Guava-এর com.google.common.base.Optional প্রায় একই উদ্দেশ্যে ব্যবহৃত হয়। তবে Guava-এর Optional আরও কিছু utility method প্রদান করে।

উদাহরণ:

import com.google.common.base.Optional;

public class GuavaOptionalExample {
    public static void main(String[] args) {
        Optional<String> guavaOptional = Optional.of("Hello, Guava!");
        if (guavaOptional.isPresent()) {
            System.out.println("Value is present: " + guavaOptional.get());
        } else {
            System.out.println("No value present.");
        }

        // Convert Guava Optional to Java 8 Optional
        java.util.Optional<String> javaOptional = guavaOptional.toJavaUtil();
        javaOptional.ifPresent(System.out::println);
    }
}

Java 8 Integration: Guava-এর Optional সহজেই Java 8-এর Optional-এ রূপান্তর করা যায়।


২. Functional Programming (Predicates এবং Functions)

Guava-এর Predicate এবং Function interface-গুলো Java 8-এর java.util.function package-এর সমান। Guava-এর পুরোনো API-কে Java 8 Lambda expressions দিয়ে সহজেই integrate করা যায়।

উদাহরণ:

import com.google.common.base.Predicate;
import com.google.common.collect.Collections2;

import java.util.Arrays;
import java.util.Collection;

public class GuavaPredicateExample {
    public static void main(String[] args) {
        Collection<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6);

        // Using Guava Predicate
        Predicate<Integer> isEven = input -> input % 2 == 0;

        Collection<Integer> evenNumbers = Collections2.filter(numbers, isEven);
        System.out.println("Even Numbers: " + evenNumbers);

        // Using Java 8 Stream for the same task
        numbers.stream()
                .filter(num -> num % 2 == 0)
                .forEach(System.out::println);
    }
}

Java 8 Integration: Java 8-এর Stream API Guava-এর Collections2-এর কাজ সহজতর করে দেয়।


৩. Immutable Collections

Guava-এর ImmutableList, ImmutableSet, এবং ImmutableMap অনেক বেশি নিরাপদ, বিশেষত যখন collections পরিবর্তন করা অনুচিত।

উদাহরণ:

import com.google.common.collect.ImmutableList;

public class GuavaImmutableExample {
    public static void main(String[] args) {
        // Using Guava ImmutableList
        ImmutableList<String> immutableList = ImmutableList.of("A", "B", "C");
        System.out.println("Guava ImmutableList: " + immutableList);

        // Java 8 Immutable List
        java.util.List<String> javaImmutableList = java.util.List.of("A", "B", "C");
        System.out.println("Java 8 Immutable List: " + javaImmutableList);
    }
}

Java 8 Integration: Guava-এর immutable collections সরাসরি Java 8-এর immutable collections-এর সাথে প্রতিস্থাপনযোগ্য।


৪. Caching (Guava Cache vs Java 8 Map.computeIfAbsent)

Guava-এর Cache API এবং Java 8-এর Map.computeIfAbsent অনেক ক্ষেত্রেই কার্যকর।

উদাহরণ:

import com.google.common.cache.Cache;
import com.google.common.cache.CacheBuilder;

import java.util.concurrent.TimeUnit;

public class GuavaCacheExample {
    public static void main(String[] args) throws InterruptedException {
        // Using Guava Cache
        Cache<String, String> cache = CacheBuilder.newBuilder()
                .expireAfterWrite(5, TimeUnit.SECONDS)
                .build();

        cache.put("key", "value");
        System.out.println("Cached value: " + cache.getIfPresent("key"));

        Thread.sleep(6000);
        System.out.println("Cached value after expiration: " + cache.getIfPresent("key"));

        // Using Java 8 Map.computeIfAbsent
        java.util.Map<String, String> map = new java.util.HashMap<>();
        String value = map.computeIfAbsent("key", k -> "computedValue");
        System.out.println("Value from Java 8 Map: " + value);
    }
}

Java 8 Integration: Guava Cache আরো শক্তিশালী এবং কাস্টমাইজেবল হলেও Java 8-এর computeIfAbsent ছোটখাট কাজের জন্য উপযুক্ত।


৫. Strings Manipulation (Joiner এবং Splitter)

Guava-এর Joiner এবং Splitter Java 8-এর String APIs-এর সাথে মিলে যায়।

উদাহরণ:

import com.google.common.base.Joiner;
import com.google.common.base.Splitter;

public class GuavaStringExample {
    public static void main(String[] args) {
        // Using Guava Joiner
        String joined = Joiner.on(", ").skipNulls().join("Apple", null, "Banana", "Cherry");
        System.out.println("Joined String: " + joined);

        // Using Java 8 String.join
        String joinedJava8 = String.join(", ", "Apple", "Banana", "Cherry");
        System.out.println("Joined String (Java 8): " + joinedJava8);

        // Using Guava Splitter
        Iterable<String> parts = Splitter.on(",").trimResults().omitEmptyStrings().split("  A, B, ,C  ");
        parts.forEach(System.out::println);
    }
}

Java 8 Integration: Java 8-এর String.join এবং String.split Guava-এর কাজের বিকল্প হিসেবে ব্যবহৃত হতে পারে।


Guava-এর অনেক ফিচার Java 8-এর নতুন API-তে অন্তর্ভুক্ত হয়েছে, তবে Guava-এর ফিচারগুলো এখনও অনেক ক্ষেত্রেই শক্তিশালী এবং কাস্টমাইজেবল। বাস্তব অ্যাপ্লিকেশনগুলোতে Guava এবং Java 8-এর API একসাথে ব্যবহার করলে কোড আরো কার্যকর এবং রিডেবল হয়।

Content added By
Promotion
NEW SATT AI এখন আপনাকে সাহায্য করতে পারে।

Are you sure to start over?

Loading...